package com.delio.client.produccion.detallerecetas;

import java.util.List;

import com.extjs.gxt.ui.client.data.BaseFilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class DetalleRecetas{

  private static DetalleRecetaServiceAsync drs = GWT.create(DetalleRecetaService.class);
  public static ListStore<BeanModel> store;
  public static ListStore<BeanModel> storeCombo;
  public static PagingLoader<PagingLoadResult<ModelData>> loader;
  public static ListLoader<ListLoadResult<ModelData>> loaderCombo;
  public static Integer receta_id;
  public static Integer detallereceta_id;

public static void getPaginate() {
		RpcProxy<PagingLoadResult<DetalleReceta>> proxy = new RpcProxy<PagingLoadResult<DetalleReceta>>() {

			@Override
			protected void load(Object loadConfig,
			    AsyncCallback<PagingLoadResult<DetalleReceta>> callback) {
				
				drs.paginateDetalleReceta((FilterPagingLoadConfig) loadConfig, receta_id, callback);
				
			}  
	    };
	    loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader()){  
	        @Override  
	        protected Object newLoadConfig() {  
	          BasePagingLoadConfig config = new BaseFilterPagingLoadConfig();  
	          return config;  
	        }  
	      };  
        loader.setRemoteSort(true);  
        store = new ListStore<BeanModel>(loader);
 }
 
 
public static void getStore(){
		
	 RpcProxy<List<DetalleReceta>> proxy = new RpcProxy<List<DetalleReceta>>(){
	    protected void load(Object loadConfig, AsyncCallback<List<DetalleReceta>> callback){
		    drs.ListarDetalleRecetas(callback);
		 }
	  	};
	 loaderCombo = new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());
	 storeCombo = new ListStore<BeanModel>(loaderCombo);
	 loaderCombo.load();
	  
}

/* public static void listardireccioncliente(){
    	System.out.println("el id del pedido es"+ pedido_id);
      RpcProxy<List<DireccionCliente>> proxy = new RpcProxy<List<DireccionCliente>>(){
		    protected void load(Object loadConfig, AsyncCallback<List<DireccionCliente>> callback){
		       dps.ListarDetallePedidos(pedido_id, callback);
			 }
		  	};
	  	loader = BaseListLoader<ListLoadResult<BeanModel>>(proxy, new BeanModelReader());  
	    store = new ListStore<BeanModel>(loader);
  	}*/    
    
    public static void listardireccionclienteCombo(){
      RpcProxy<List<DetalleReceta>> proxy = new RpcProxy<List<DetalleReceta>>(){
    		    protected void load(Object loadConfig, AsyncCallback<List<DetalleReceta>> callback){
    		       drs.ListarDetalleRecetas(callback);
    			 }
    		  	};
    	  	loaderCombo = new BaseListLoader<ListLoadResult<ModelData>>(proxy, new BeanModelReader());  
    	    storeCombo = new ListStore<BeanModel>(loaderCombo);	
      
    }
    
	public static void guardar(final DetalleReceta dr){
	 drs.guardar(dr, new AsyncCallback<Boolean>(){

		@Override
		public void onFailure(Throwable caught) {
			MessageBox.alert("Error", "No pudo guardar", null);			
		}

		@Override
		public void onSuccess(Boolean result) {
           if(result){
           	   MessageBox.alert("Guardado", "Se guardo Correctamente", null);     	   
           }else{
        	MessageBox.alert("Error", "No se guardo correctamente", null);
           }
		}
	 });
   }
  
	public static void actualizar(DetalleReceta dr){
	 drs.actualizar(dr, new AsyncCallback<Boolean>(){

	   @Override
	   public void onFailure(Throwable caught) {
		   MessageBox.alert("Error", "Error en la acutalizacion", null);	 
	   }	
		 
	   public void onSuccess(Boolean result){
		 if(result){
		   MessageBox.alert("Actualizado","Se actualizo Correctamente", null);
		 }else{
		   MessageBox.alert("Error", "No se actualizo Correctamente", null);	 
		 }
		}

	 });
 }
 
 public static void eliminar(Integer id){
     drs.eliminar(id, new AsyncCallback<Boolean>(){
		
		 @Override
		 public void onFailure(Throwable caught){
			 MessageBox.alert("Error", "Error en la Eliminacion", null);
		 }
		 
		 public void onSuccess(Boolean result){
			 if(result){
			   MessageBox.alert("Eliminado","Se elimino Correctamente", null); 
			 }else{
			   MessageBox.alert("Error", "No se elimino Correctamente", null);	 
			 } 
		 }

	 });
 }
}
